﻿var K_Operacion = { Insertar: 1, Editar: 2, Ver: 3 };
var K_ResultadoAjax = { Exito: 1, Error: 0 };
var K_MensajeSelect = { Todos: 'Todos', Seleccione: 'Seleccione' };

$(function () {
    $("#mvNuevo").dialog({
        modal: true,
        autoOpen: false,
        width: 650,
        height: 300,
        title: "Nuevo Registro de Usuario",
        buttons: {
            "Grabar": insertar,
            "Cerrar": closePopup
        }
    });

    $("#btnLimpiar").on("click", function () {
        $("#txtNombreFiltro").val("");
        $("#ddlOficinaFiltro").val("0");
        $("#ddlSituacionFiltro").val("0");
        buscar();
    }).button();

    $("#btnBuscar").on("click", function () {
        buscar();
    }).button();

    $("#btnNuevo").on("click", function () {
        resetPopup();
        $("#hidOpcion").val(K_Operacion.Insertar);
        $("#mvNuevo").dialog('option', 'title', 'Registrar información de Usuario.');
        $("#mvNuevo").dialog("open");
    }).button();

    $("#btnEditar").on("click", function () {
        var filas = jQuery("#grid").jqGrid('getGridParam', 'selarrrow');
        if (filas != null) {
            if (filas.length > 0) {
                if (filas.length == 1) {
                    var codigoSel = jQuery("#grid").jqGrid('getRowData', filas[0]).CodigoUsuario;
                    edit(codigoSel);
                } else {
                    alertify.error("Para modificar seleccione sólo un elemento de la lista.");
                }
            } else {
                alertify.error("Seleccione un elemento para modificar.");
            }
        } else {
            alertify.error("Seleccione un elemento para modificar.");
        }
    }).button();

    $("#btnEliminar").on("click", function () {
        var item = new Array();

        var filas = jQuery("#grid").jqGrid('getGridParam', 'selarrrow');

        if (filas.length > 0) {
            alertify.confirm("Esta seguro de eliminar los registros seleccionados?", function (e) {
                if (e) {
                    for (var i = 0; i < filas.length; i++) {
                        var codigoSel = (jQuery("#grid").jqGrid('getRowData', filas[i]).CodigoUsuario);
                        item[i] = codigoSel;
                    }
                    eliminar(item);
                } else {
                    alertify.error("Operación eliminación cancelada.");
                }
            });

        } else {
            alertify.error("Seleccione un elemento para eliminar.");
        }
        return false;
    }).button();

    $("#txtNombreFiltro").on("keypress", function (e) {
        if (e.which == 13) {
            buscar();
        }
    });

    listarOficina("ddlOficinaFiltro", K_MensajeSelect.Todos);
    buscar();
});

function MostarClave(elem) {
    if (elem.checked) {
        $("#txtPassword").attr("type", "text");
    } else {
        $("#txtPassword").attr("type", "password");
    }
};

var eliminar = function (item) {
    $.each(item, function (index, i) {
        $.ajax({
            data: { CodigoUsuario: i },
            url: 'Eliminar',
            type: 'POST',
            success: function (response) {
                var dato = response;
                validarRedirect(dato);
                if (dato.result == K_ResultadoAjax.Exito) {
                    alertify.success(dato.message);
                    buscar();
                } else {
                    alertify.success(dato.message);
                }
            }
        });
    });
    return false;
}

var insertar = function () {
    if (ValidarRequeridos()) {
                var usuario = {
                    CodigoUsuario: $("#txtCodigo").val(),
                    CodigoParamDocumento: $("#ddlTipoDocumento").val(),
                    NumeroDocumento: $("#txtNumDocumento").val(),
                    Nombre: $("#txtNombre").val(),
                    Paterno: $("#txtApellidoPat").val(),
                    Materno: $("#txtApellidoMat").val(),
                    DominioWindow: $("#txtDominio").val(),
                    UsuarioWindow: $("#txtUsuarioNT").val(),
                    CorreoElectronico: $("#txtCorreo").val(),
                    Anulado: $("#ddlSituacion").val() == 'A' ? false : true,
                    Clave: $("#txtPassword").val()
                };
                if ($("#hidOpcion").val() == K_Operacion.Insertar) {
                            $.ajax({
                                url: 'Insertar',
                                data: usuario,
                                type: 'POST',
                                success: function (response) {
                                    var dato = response;
                                    validarRedirect(dato);
                                    //alert(dato.result);
                                    if (dato.result == K_ResultadoAjax.Exito) {
                                        alertify.success(dato.message);
                                        $("#mvNuevo").dialog("close");
                                        buscar();
                                    } else {
                                        alertify.error(dato.message);
                                    }
                                }
                            });
                            
                } else if ($("#hidOpcion").val() == K_Operacion.Editar) {
                    $.ajax({
                        url: 'Actualizar',
                        data: usuario,
                        type: 'POST',
                        success: function (response) {
                            var dato = response;
                            validarRedirect(dato);
                            if (dato.result == K_ResultadoAjax.Exito) {
                                alertify.success(dato.message);
                            } else {
                                alertify.error(dato.message);
                            }
                        }
                    });
                    $("#mvNuevo").dialog("close");
                    buscar();
                }
    }
}

var closePopup = function () {
    $("#mvNuevo").dialog("close");
};

function resetPopup() {
    msgOkB("aviso", "");
    limpiarRequerido();

    listarTipoDocumento("ddlTipoDocumento", K_MensajeSelect.Seleccione);

    $("#txtCodigo").val("");
    $("#txtNumDocumento").val("");
    $("#txtNombre").val("");
    $("#txtApellidoPat").val("");
    $("#txtApellidoMat").val("");
    $("#txtDominio").val("");
    $("#txtUsuarioNT").val("");
    $("#txtCorreo").val("");
    $("#txtPassword").val("");

    $("#txtNumDocumento").removeAttr('disabled');
    $("#txtNombre").removeAttr('disabled');
    $("#txtApellidoPat").removeAttr('disabled');
    $("#txtApellidoMat").removeAttr('disabled');
    $("#txtDominio").removeAttr('disabled');
    $("#txtUsuarioNT").removeAttr('disabled');
    $("#txtCorreo").removeAttr('disabled');
    $("#txtPassword").removeAttr('disabled');

    $("#ddlTipoDocumento").removeAttr('disabled');
    $("#ddlSituacion").removeAttr('disabled');
}

function edit(id) {
    $("#hidOpcion").val(K_Operacion.Editar);
    $("#mvNuevo").dialog("open");
    $("#mvNuevo").dialog('option', 'title', 'Actualizar información de Usuario.');
    resetPopup();

    $.ajax({
        data: { CodigoUsuario: id },
        url: 'ObtenerUsuario',
        type: 'POST',
        success: function (response) {
            var dato = response;
            validarRedirect(dato);
            var usuario = dato.data.Data;
            if (dato.result = K_ResultadoAjax.Exito) {

                listarTipoDocumento("ddlTipoDocumento", K_MensajeSelect.Seleccione, usuario.CodigoParamDocumento);
                $("#txtCodigo").val(usuario.CodigoUsuario);
                $("#txtNumDocumento").val(usuario.NumeroDocumento);
                $("#txtNombre").val(usuario.Nombre);
                $("#txtApellidoPat").val(usuario.Paterno);
                $("#txtApellidoMat").val(usuario.Materno);
                $("#txtDominio").val(usuario.DominioWindow);
                $("#txtUsuarioNT").val(usuario.UsuarioWindow);
                $("#txtCorreo").val(usuario.CorreoElectronico);
                $("#txtPassword").val(usuario.Clave);
                $("#ddlSituacion").val(usuario.Anulado == false ? 'A' : 'I');
            }
        }
    });
}

function del(id) {
    alertify.confirm("Esta seguro de eliminar el registro?", function (e) {
        if (e) {
            var item = Array();
            item[0] = id;
            eliminar(item);
        } else {
            alertify.error("Operación eliminación cancelada.");
        }
    });
    return false;
}

function ver(id) {
    $("#hidOpcion").val(K_Operacion.Ver);
    $("#mvNuevo").dialog("open");
    $("#mvNuevo").dialog('option', 'title', 'Información de usuario.');
    resetPopup();
    $.ajax({
        data: { CodigoUsuario: id },
        url: 'ObtenerUsuario',
        type: 'POST',
        success: function (response) {
            var dato = response;
            validarRedirect(dato);
            var usuario = dato.data.Data;
            if (dato.result = K_ResultadoAjax.Exito) {
                listarTipoDocumento("ddlTipoDocumento", K_MensajeSelect.Seleccione, usuario.CodigoParamDocumento);
                $("#txtCodigo").val(usuario.CodigoUsuario);
                $("#txtNumDocumento").val(usuario.NumeroDocumento);
                $("#txtNombre").val(usuario.Nombre);
                $("#txtApellidoPat").val(usuario.Paterno);
                $("#txtApellidoMat").val(usuario.Materno);
                $("#txtDominio").val(usuario.DominioWindow);
                $("#txtUsuarioNT").val(usuario.UsuarioWindow);
                $("#txtCorreo").val(usuario.CorreoElectronico);
                $("#txtPassword").val(usuario.Clave);
                $("#ddlSituacion").val(usuario.Anulado == false ? 'A' : 'I');

                $("#txtNombre").attr('disabled', 'disabled');
                $("#txtNumDocumento").attr('disabled', 'disabled');
                $("#txtApellidoPat").attr('disabled', 'disabled');
                $("#txtApellidoMat").attr('disabled', 'disabled');
                $("#txtDominio").attr('disabled', 'disabled');
                $("#txtUsuarioNT").attr('disabled', 'disabled');
                $("#txtCorreo").attr('disabled', 'disabled');
                $("#txtPassword").attr('disabled', 'disabled');

                $("#ddlTipoDocumento").prop('disabled', 'disabled');
                $("#ddlSituacion").prop('disabled', 'disabled');
            }
        }
    });
    return false;
}

var buscar = function () {
    validarSesion();
    var usuario = {
        Nombre: $("#txtNombreFiltro").val(),
        CodigoOficina: $("#ddlOficinaFiltro").val(),
        anulado:$("#ddlSituacionFiltro").val()
    };

    $("#grid").jqGrid("clearGridData", true);
    $("#grid").jqGrid('setGridParam', { url: 'ListarUsuarioJQGRID', datatype: 'json', mtype: 'POST', postData: usuario }).trigger('reloadGrid');

    jQuery("#grid").jqGrid({
        url: 'ListarUsuarioJQGRID',
        datatype: 'json',
        postData: usuario,
        mtype: 'POST',
        colNames: ['Codigo', 'Nombre', 'Nro. Documento', 'Tipo Documento','Correo', 'Situacion', 'Accion'],
        colModel: [
            { name: 'CodigoUsuario', index: 'CodigoUsuario', width: 50, align: 'center' },
            { name: 'Nombre', index: 'Nombre', width: 150, align: 'left', },
            { name: 'NumeroDocumento', index: 'NumeroDocumento', width: 150, align: 'center' },
            { name: 'TipoDocumento', index: "TipoDocumento", width: 120, align: 'center' },
            { name: 'CorreoElectronico', index: "CorreoElectronico", width: 120, align: 'center' },
            { name: 'Situacion', index: "Situacion", width: 80, align: 'center' },
            { name: 'act', index: 'act', width: 75, sortable: false }, ],
        rowNum: 20,
        pager: jQuery('#pager'),
        rowList: [20, 30, 50],
        sortname: 'Codigo',
        viewrecords: true,
        sortorder: 'asc',
        multiselect: true,
        multiSort: true,
        width: '990',
        height: '200',
        caption: 'Usuarios Registrados',
        ondblClickRow: function (id) { verDeta(id); },
        gridComplete: function () {
            var ids = jQuery("#grid").jqGrid('getDataIDs');
            for (var i = 0; i < ids.length; i++) {
                var cl = ids[i];
                xview = "<img src='../Imagen/icono/search.png' onclick=\"ver('" + cl + "');\"  />&nbsp;&nbsp;";
                xedit = "<img src='../Imagen/icono/edit.png' onclick=\"edit('" + cl + "');\"  />&nbsp;&nbsp;";
                xdel = "<img src='../Imagen/icono/del.png' onclick=\"del('" + cl + "');\"  /> ";
                jQuery("#grid").jqGrid('setRowData', ids[i], { act: xview + xedit + xdel });
            }
        }

    });
}

function validarUsuario() {
    var existe = 0;
    var usuario = {
        UsuarioWindow:$("#txtUsuarioNT").val()
    };
    $.ajax({
        data: usuario,
        url: "validarUsuario",
        type: 'POST',
        success: function (response) {
            var dato = response;
            validarRedirect(dato);
            if (dato.result == K_ResultadoAjax.Exito) {
                //existe = 0;
                return true;
            } else {
                alertify.error(dato.message);
                //existe++;
                return false;
            }
        }
    });
}

var validarNumeroDocumento = function () {
    var existe = 0;
    var usuario = {
        CodigoParamDocumento: $("#ddlTipoDocumento").val(),
        NumeroDocumento: $("#txtNumDocumento").val()
    }
    $.ajax({
        data: usuario,
        url: "validarNumeroDocumento",
        type: 'POST',
        success: function (response) {
            var dato = response;
            validarRedirect(dato);
            if (dato.result == K_ResultadoAjax.Exito) {
                return true;
            } else {
                
                alertify.error(dato.message);
                return false;
            }
        }
    });
    //if (existe == 0) {
    //    return true;
    //} else {
    //    return false;
    //}
}